package demo.jmockit;

import mockit.Mock;
import mockit.MockUp;
import org.junit.Assert;
import org.junit.Test;

public class InitDemoTest {
    @Test
    public void testInitDemo() {
        new InitDemoMockUp();
        InitDemo instance = new InitDemo(10);
        System.out.println(InitDemo.staticValue);
        System.out.println(instance.getValue());
        // 静态初始代码块被mock了
        Assert.assertTrue(InitDemo.staticValue == 0);
        // 构造函数和初始代码块被mock
        Assert.assertTrue(instance.getValue() == 0);
    }


}

class InitDemoMockUp extends MockUp<InitDemo> {
    // Mock构造函数和初始代码块, 函数名$init就代表类的构造函数
    @Mock
    public void $init(int i) {
    }

    // Mock静态初始代码块,, 函数名$init就代表类的静态代码块
    @Mock
    public void $clinit() {
    }
}